package generics;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-10-07
 * Time: 23:07
 */
class Person{
    int a;
    int b;
}
class Student extends Person{
    int c;
    int d;
}
//泛型受限：有限制的类型擦除
public class Test_GenericsRestricted {
    public static void main(String[] args) {
        //a,b,c三个集合是并列的关系：
        List<Object> a = new ArrayList<>();
        List<Person> b = new ArrayList<>();
        List<Student> c = new ArrayList<>();
        /*开始使用泛型受限：泛型的上限
        List<? extends Person>:
        就相当于：
        List<? extends Person>是List<Person>的父类，是List<Person的子类>的父类
         */
        List<? extends Person> list1 = null;
        //list1 = a; //报错
        list1 = b; //不报错
        list1 = c; //不报错
        
        /*开始使用泛型受限：泛型的下限
        List<? super Person>
        就相当于：
        List<? super Person>是List<Person>的父类，是List<Person的父类>的父类
         */
        List<? super Person> list2 = null;
        list2 = a;  //不报错
        list2 = b;  //不报错
        //list2 = c;  //报错
    }
}
